﻿#ifndef ANIMATIONMANAGER_SHIFTING_H
#define ANIMATIONMANAGER_SHIFTING_H

#include <QObject>

#include <QThread>


#include "CommonHelper.h"
#include "animationState_Shifting.h"
#include "animationController_Shifting.h"

// 放靶/转靶
class AnimationManager_Shifting : public QObject
{
    Q_OBJECT

private:
    AnimationManager_Shifting();
    ~AnimationManager_Shifting();

public:

    static AnimationManager_Shifting& I();

    Q_INVOKABLE QVariantMap requestInfo();

    Q_INVOKABLE void reset();

    Q_INVOKABLE void openClamp();       // 打开夹爪
    Q_INVOKABLE void closeClamp();      // 关闭夹爪
    Q_INVOKABLE void pushBaffle();      // 拉出来挡板
    Q_INVOKABLE void pullBaffle();      // 推进去挡板
    Q_INVOKABLE void openBlowTarget();      // 送靶（下面那根管子亮）
    Q_INVOKABLE void closeBlowTarget();
    Q_INVOKABLE void openCap();         // 开盖
    Q_INVOKABLE void closeCap();        // 关盖
    Q_INVOKABLE void takeTarget();      // 取靶
    Q_INVOKABLE void placeTarget();     // 放靶
    Q_INVOKABLE void resetBar();        // 中间的那个复位
    Q_INVOKABLE void setPPumpState(int state);      // 设置蠕动泵转动状态
    Q_INVOKABLE void downRadioBar();    // 活检下移
    Q_INVOKABLE void upRadioBar();      // 活检上移
    Q_INVOKABLE void moveToRadio();     // 运动到活检（不知道具体要干哈）

    // Z轴和X轴气缸在下位机发位置后瞬移过去
    Q_INVOKABLE void teleportZ(int idx);        // 0原始位置  1吸靶位置 2开关盖位置 3放靶位置 4故障 5屏蔽
    Q_INVOKABLE void teleportX(int idx);        // 0原始位置 1吸靶

    // 旋盖夹爪
    Q_INVOKABLE void baCaiGuaiJiaJin();
    Q_INVOKABLE void baCaiGuaiSongKai();
    Q_INVOKABLE void yuanDianJiaJin();
    Q_INVOKABLE void yuanDianSongKai();

    // 旋盖动作及位置
    Q_INVOKABLE void kaiGai();
    Q_INVOKABLE void guanGai();
    Q_INVOKABLE void baCaiGuanWeiZhi();
    Q_INVOKABLE void chuShiWeiZhi();

    // z轴气缸
    Q_INVOKABLE void zQiGangUp();
    Q_INVOKABLE void zQiGangDown();

    Q_INVOKABLE void setMachineType(int type);

    AnimationState_Shifting*            _state;
    AnimationController_Shifting*       _controller;

};

#endif // ANIMATIONMANAGER_SHIFTING_H
